package com.yuandian.management.mapper;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.management.vo.OriginalDataFilterVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 原始数据过滤mapper
 *
 * @author zhoutian
 * @date 2021/1/20 10:40
 */
@Mapper
public interface OriginalDataFilterMapper {

    /**
     * 根据规则名称模糊查询
     *
     * @param ruleName 规则名称
     * @return List<OriginalDataFilterVo>
     */
	Page<OriginalDataFilterVo> queryFilterListByPage(Page<OriginalDataFilterVo> page, @Param("ruleName") String ruleName);

    /**
     * 根据id查询
     *
     * @param id id
     * @return OriginalDataFilterVo
     */

    OriginalDataFilterVo findById(Integer id);

    /**
     * 根据id集查询
     *
     * @param idList id集
     * @return List<OriginalDataFilterVo>
     */
    List<OriginalDataFilterVo> queryByIds(@Param("idList") List<Integer> idList);

    /**
     * 批量根据id逻辑删除数据
     *
     * @param idList     id集
     * @param syncStatus 同步实时流状态
     */
    void logicDelByIds(@Param("idList") List<Integer> idList, @Param("syncStatus") Integer syncStatus);

    /**
     * 修改 是否启用 or 逻辑删除
     *
     * @param idList id集
     * @param status 是否启用 0禁用 1启用',
     * @param dr     逻辑删除0正常；1删除。
     */
    void startOrStopStatus(@Param("idList") List<Integer> idList, @Param("status") Integer status, @Param("dr") Integer dr);

    /**
     * 统计当前表中存在的逻辑删数据条数
     *
     * @return Integer
     */
    Integer countLogicDelAndUpdate();

    /**
     * 根据id集查询数据
     *
     * @param ids id集
     * @return List<OriginalDataFilterVo>
     */
    List<OriginalDataFilterVo> queryFilterByIds(@Param("idList") List<Integer> ids);

    /**
     * 批量更新状态 '同步实时流状态' or '是否启用' or '逻辑删除'
     *
     * @param canUpdateIds id集
     * @param syncStatus   同步实时流状态
     * @param status       是否启用 0禁用 1启用',
     * @param dr           逻辑删除0正常；1删除。
     */
    void updateFilterStatusByIds(@Param("idList") List<Integer> canUpdateIds,
                                 @Param("syncStatus") Integer syncStatus,
                                 @Param("status") Integer status,
                                 @Param("dr") Integer dr);

    /**
     * 添加原始包捕获规则
     *
     * @param vo 参数
     * @return int
     */
    int addOriginalDataFilter(OriginalDataFilterVo vo);

    /**
     * 更新原始包捕获规则
     *
     * @param vo 参数
     * @return int
     */
    int updateOriginalDataFilter(OriginalDataFilterVo vo);

    /**
     * 更新同步状态
     *
     * @param vo 参数
     * @return int
     */
    int updateStatus(OriginalDataFilterVo vo);

    /**
     * 更新规则执行状态(0为执行 1执行中)
     *
     * @param vo 参数
     * @return int
     */
    int updateEnable(OriginalDataFilterVo vo);

    /**
     * 查询全部规则名称
     * @return List<Map<String, Object>>
     */
    List<Map<String, Object>> queryRuleNameMap();
}
